/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package ged;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Node</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link ged.Node#getLabel <em>Label</em>}</li>
 *   <li>{@link ged.Node#getToolTip <em>Tool Tip</em>}</li>
 *   <li>{@link ged.Node#getBorder_lineType <em>Border line Type</em>}</li>
 *   <li>{@link ged.Node#getGradient <em>Gradient</em>}</li>
 *   <li>{@link ged.Node#getShape <em>Shape</em>}</li>
 *   <li>{@link ged.Node#getImages <em>Images</em>}</li>
 *   <li>{@link ged.Node#getCustomShape <em>Custom Shape</em>}</li>
 *   <li>{@link ged.Node#getCustomImage <em>Custom Image</em>}</li>
 *   <li>{@link ged.Node#getBackgroundColor <em>Background Color</em>}</li>
 *   <li>{@link ged.Node#getForegroundColor <em>Foreground Color</em>}</li>
 *   <li>{@link ged.Node#getFontColor <em>Font Color</em>}</li>
 *   <li>{@link ged.Node#getBorderMargin <em>Border Margin</em>}</li>
 *   <li>{@link ged.Node#getInnerMargin <em>Inner Margin</em>}</li>
 *   <li>{@link ged.Node#getLinewidth <em>Linewidth</em>}</li>
 *   <li>{@link ged.Node#getFont <em>Font</em>}</li>
 *   <li>{@link ged.Node#getLabel_attributes <em>Label attributes</em>}</li>
 * </ul>
 * </p>
 *
 * @see ged.GedPackage#getNode()
 * @model annotation="gmf.node label='label'"
 * @generated
 */
public interface Node extends EObject
{
  /**
   * Returns the value of the '<em><b>Label</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Label</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Label</em>' attribute.
   * @see #setLabel(String)
   * @see ged.GedPackage#getNode_Label()
   * @model
   * @generated
   */
  String getLabel();

  /**
   * Sets the value of the '{@link ged.Node#getLabel <em>Label</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Label</em>' attribute.
   * @see #getLabel()
   * @generated
   */
  void setLabel(String value);

  /**
   * Returns the value of the '<em><b>Tool Tip</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Tool Tip</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Tool Tip</em>' attribute.
   * @see #setToolTip(String)
   * @see ged.GedPackage#getNode_ToolTip()
   * @model
   * @generated
   */
  String getToolTip();

  /**
   * Sets the value of the '{@link ged.Node#getToolTip <em>Tool Tip</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Tool Tip</em>' attribute.
   * @see #getToolTip()
   * @generated
   */
  void setToolTip(String value);

  /**
   * Returns the value of the '<em><b>Background Color</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Background Color</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Background Color</em>' reference.
   * @see #setBackgroundColor(Color)
   * @see ged.GedPackage#getNode_BackgroundColor()
   * @model
   * @generated
   */
  Color getBackgroundColor();

  /**
   * Sets the value of the '{@link ged.Node#getBackgroundColor <em>Background Color</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Background Color</em>' reference.
   * @see #getBackgroundColor()
   * @generated
   */
  void setBackgroundColor(Color value);

  /**
   * Returns the value of the '<em><b>Foreground Color</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Foreground Color</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Foreground Color</em>' reference.
   * @see #setForegroundColor(Color)
   * @see ged.GedPackage#getNode_ForegroundColor()
   * @model
   * @generated
   */
  Color getForegroundColor();

  /**
   * Sets the value of the '{@link ged.Node#getForegroundColor <em>Foreground Color</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Foreground Color</em>' reference.
   * @see #getForegroundColor()
   * @generated
   */
  void setForegroundColor(Color value);

  /**
   * Returns the value of the '<em><b>Font Color</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Font Color</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Font Color</em>' reference.
   * @see #setFontColor(Color)
   * @see ged.GedPackage#getNode_FontColor()
   * @model
   * @generated
   */
  Color getFontColor();

  /**
   * Sets the value of the '{@link ged.Node#getFontColor <em>Font Color</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Font Color</em>' reference.
   * @see #getFontColor()
   * @generated
   */
  void setFontColor(Color value);

  /**
   * Returns the value of the '<em><b>Border Margin</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Border Margin</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Border Margin</em>' reference.
   * @see #setBorderMargin(BorderMargin)
   * @see ged.GedPackage#getNode_BorderMargin()
   * @model
   * @generated
   */
  BorderMargin getBorderMargin();

  /**
   * Sets the value of the '{@link ged.Node#getBorderMargin <em>Border Margin</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Border Margin</em>' reference.
   * @see #getBorderMargin()
   * @generated
   */
  void setBorderMargin(BorderMargin value);

  /**
   * Returns the value of the '<em><b>Inner Margin</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Inner Margin</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Inner Margin</em>' reference.
   * @see #setInnerMargin(BorderInnerMargin)
   * @see ged.GedPackage#getNode_InnerMargin()
   * @model
   * @generated
   */
  BorderInnerMargin getInnerMargin();

  /**
   * Sets the value of the '{@link ged.Node#getInnerMargin <em>Inner Margin</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Inner Margin</em>' reference.
   * @see #getInnerMargin()
   * @generated
   */
  void setInnerMargin(BorderInnerMargin value);

  /**
   * Returns the value of the '<em><b>Linewidth</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Linewidth</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Linewidth</em>' reference.
   * @see #setLinewidth(LineWidth)
   * @see ged.GedPackage#getNode_Linewidth()
   * @model
   * @generated
   */
  LineWidth getLinewidth();

  /**
   * Sets the value of the '{@link ged.Node#getLinewidth <em>Linewidth</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Linewidth</em>' reference.
   * @see #getLinewidth()
   * @generated
   */
  void setLinewidth(LineWidth value);

  /**
   * Returns the value of the '<em><b>Font</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Font</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Font</em>' reference.
   * @see #setFont(Font)
   * @see ged.GedPackage#getNode_Font()
   * @model
   * @generated
   */
  Font getFont();

  /**
   * Sets the value of the '{@link ged.Node#getFont <em>Font</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Font</em>' reference.
   * @see #getFont()
   * @generated
   */
  void setFont(Font value);

  /**
   * Returns the value of the '<em><b>Label attributes</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Label attributes</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Label attributes</em>' reference.
   * @see #setLabel_attributes(Label_attributes)
   * @see ged.GedPackage#getNode_Label_attributes()
   * @model
   * @generated
   */
  Label_attributes getLabel_attributes();

  /**
   * Sets the value of the '{@link ged.Node#getLabel_attributes <em>Label attributes</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Label attributes</em>' reference.
   * @see #getLabel_attributes()
   * @generated
   */
  void setLabel_attributes(Label_attributes value);

  /**
   * Returns the value of the '<em><b>Border line Type</b></em>' attribute.
   * The literals are from the enumeration {@link ged.LineType}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Border line Type</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Border line Type</em>' attribute.
   * @see ged.LineType
   * @see #setBorder_lineType(LineType)
   * @see ged.GedPackage#getNode_Border_lineType()
   * @model
   * @generated
   */
  LineType getBorder_lineType();

  /**
   * Sets the value of the '{@link ged.Node#getBorder_lineType <em>Border line Type</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Border line Type</em>' attribute.
   * @see ged.LineType
   * @see #getBorder_lineType()
   * @generated
   */
  void setBorder_lineType(LineType value);

  /**
   * Returns the value of the '<em><b>Gradient</b></em>' attribute.
   * The literals are from the enumeration {@link ged.Gradient}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Gradient</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Gradient</em>' attribute.
   * @see ged.Gradient
   * @see #setGradient(Gradient)
   * @see ged.GedPackage#getNode_Gradient()
   * @model
   * @generated
   */
  Gradient getGradient();

  /**
   * Sets the value of the '{@link ged.Node#getGradient <em>Gradient</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Gradient</em>' attribute.
   * @see ged.Gradient
   * @see #getGradient()
   * @generated
   */
  void setGradient(Gradient value);

  /**
   * Returns the value of the '<em><b>Shape</b></em>' attribute.
   * The literals are from the enumeration {@link ged.NodesShape}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Shape</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Shape</em>' attribute.
   * @see ged.NodesShape
   * @see #setShape(NodesShape)
   * @see ged.GedPackage#getNode_Shape()
   * @model
   * @generated
   */
  NodesShape getShape();

  /**
   * Sets the value of the '{@link ged.Node#getShape <em>Shape</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Shape</em>' attribute.
   * @see ged.NodesShape
   * @see #getShape()
   * @generated
   */
  void setShape(NodesShape value);

  /**
   * Returns the value of the '<em><b>Images</b></em>' attribute.
   * The literals are from the enumeration {@link ged.NodeImage}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Images</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Images</em>' attribute.
   * @see ged.NodeImage
   * @see #setImages(NodeImage)
   * @see ged.GedPackage#getNode_Images()
   * @model
   * @generated
   */
  NodeImage getImages();

  /**
   * Sets the value of the '{@link ged.Node#getImages <em>Images</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Images</em>' attribute.
   * @see ged.NodeImage
   * @see #getImages()
   * @generated
   */
  void setImages(NodeImage value);

  /**
   * Returns the value of the '<em><b>Custom Shape</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Custom Shape</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Custom Shape</em>' attribute.
   * @see #setCustomShape(String)
   * @see ged.GedPackage#getNode_CustomShape()
   * @model
   * @generated
   */
  String getCustomShape();

  /**
   * Sets the value of the '{@link ged.Node#getCustomShape <em>Custom Shape</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Custom Shape</em>' attribute.
   * @see #getCustomShape()
   * @generated
   */
  void setCustomShape(String value);

  /**
   * Returns the value of the '<em><b>Custom Image</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Custom Image</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Custom Image</em>' attribute.
   * @see #setCustomImage(String)
   * @see ged.GedPackage#getNode_CustomImage()
   * @model
   * @generated
   */
  String getCustomImage();

  /**
   * Sets the value of the '{@link ged.Node#getCustomImage <em>Custom Image</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Custom Image</em>' attribute.
   * @see #getCustomImage()
   * @generated
   */
  void setCustomImage(String value);

} // Node
